// 开放数据域 - 用于获取微信好友数据
const sharedCanvas = wx.getSharedCanvas()
const context = sharedCanvas.getContext('2d')

// 存储好友数据
let friendsData = []

// 监听主域消息
wx.onMessage(data => {
  console.log('收到主域消息:', data)
  
  if (data.type === 'getFriends') {
    // 获取好友的云端数据
    getFriendsData()
  } else if (data.type === 'updateScore') {
    // 更新当前用户的分数到云存储
    updateUserScore(data.score)
  }
})

// 获取好友数据
function getFriendsData() {
  wx.getFriendCloudStorage({
    keyList: ['score', 'userName', 'avatarUrl'],
    success: res => {
      console.log('获取好友数据成功:', res)
      friendsData = res.data || []
      
      // 发送好友数据回主域
      sendFriendsToMain()
    },
    fail: err => {
      console.error('获取好友数据失败:', err)
    }
  })
}

// 发送好友数据到主域
function sendFriendsToMain() {
  // 处理好友数据
  const friends = friendsData.map(friend => {
    const kvDataList = friend.KVDataList || []
    const data = {}
    
    kvDataList.forEach(kv => {
      data[kv.key] = kv.value
    })
    
    return {
      openid: friend.openid,
      nickname: friend.nickname || data.userName || '微信用户',
      avatarUrl: friend.avatarUrl || data.avatarUrl || '/static/images/default-avatar.png',
      score: parseInt(data.score) || 0
    }
  })
  
  // 按分数排序
  friends.sort((a, b) => b.score - a.score)
  
  console.log('处理后的好友数据:', friends)
  
  // 注意：开放数据域无法直接发送消息到主域
  // 需要通过绘制canvas的方式传递数据
  // 这里我们绘制好友列表
  drawFriendsList(friends)
}

// 绘制好友列表
function drawFriendsList(friends) {
  // 清空画布
  context.clearRect(0, 0, sharedCanvas.width, sharedCanvas.height)
  
  // 设置背景
  context.fillStyle = '#ffffff'
  context.fillRect(0, 0, sharedCanvas.width, sharedCanvas.height)
  
  // 绘制标题
  context.fillStyle = '#333333'
  context.font = 'bold 32px sans-serif'
  context.fillText('好友列表', 20, 50)
  
  // 绘制好友列表
  friends.forEach((friend, index) => {
    const y = 100 + index * 100
    
    // 绘制序号
    context.fillStyle = '#666666'
    context.font = '24px sans-serif'
    context.fillText(`${index + 1}`, 20, y + 30)
    
    // 绘制昵称
    context.fillStyle = '#333333'
    context.font = '28px sans-serif'
    context.fillText(friend.nickname, 80, y + 30)
    
    // 绘制分数
    context.fillStyle = '#999999'
    context.font = '24px sans-serif'
    context.fillText(`分数: ${friend.score}`, 400, y + 30)
    
    // 绘制分割线
    context.strokeStyle = '#eeeeee'
    context.beginPath()
    context.moveTo(20, y + 60)
    context.lineTo(sharedCanvas.width - 20, y + 60)
    context.stroke()
  })
  
  if (friends.length === 0) {
    context.fillStyle = '#999999'
    context.font = '24px sans-serif'
    context.textAlign = 'center'
    context.fillText('暂无好友数据', sharedCanvas.width / 2, sharedCanvas.height / 2)
  }
}

// 更新用户分数
function updateUserScore(score) {
  wx.setUserCloudStorage({
    KVDataList: [{
      key: 'score',
      value: String(score)
    }],
    success: () => {
      console.log('更新分数成功')
      // 更新后重新获取好友数据
      getFriendsData()
    },
    fail: err => {
      console.error('更新分数失败:', err)
    }
  })
}

// 初始化
console.log('开放数据域已加载')
